home *** CD-ROM | disk | FTP | other *** search
/ Delphi Informant Complete 1995 - 2000 / Delphi Informant Complete 1995 to 2000.iso / Delphi Informant Magazine Complete Works SOURCE CODE 1998.rar / 1998 / Mar / DI9803DB / common / SysStatus.pas < prev   
Encoding:
Pascal/Delphi Source File  |  1997-10-11  |  4.3 KB  |  142 lines

  1. unit SysStatus;
  2. {
  3.   TSystemStatus component unit
  4.   Author:              David W. Body / Big Creek Software
  5.   E-mail address:      davidbody@bigcreek.com
  6.   Original Version:    September 1, 1997
  7.   Last Updated:        October 11, 1997
  8.   This code is hereby placed in the public domain.
  9. }
  10.  
  11. interface
  12.  
  13. uses
  14.   Windows, Classes;
  15.  
  16. type
  17.  
  18. TSystemStatus = class(TComponent)
  19. private
  20.   FComputerName: string;
  21.   FUserName: string;
  22.   FMajorVersion: integer;
  23.   FMinorVersion: integer;
  24.   FBuildNumber: integer;
  25.   FPlatformID: integer;
  26.   FTotalPhys: integer;
  27.   FAvailPhys: integer;
  28.   FTotalPageFile: integer;
  29.   FAvailPageFile: integer;
  30.   FTotalVirtual: integer;
  31.   FAvailVirtual: integer;
  32. public
  33.   procedure GetSystemStatus;
  34.   procedure DisplaySystemStatus(Strings: TStrings);
  35. published
  36.   property ComputerName: string read FComputerName write FComputerName;
  37.   property UserName: string read FUserName write FUserName;
  38.   property MajorVersion: integer read FMajorVersion write FMajorVersion;
  39.   property MinorVersion: integer read FMinorVersion write FMinorVersion;
  40.   property BuildNumber: integer read FBuildNumber write FBuildNumber;
  41.   property PlatformID: integer read FPlatformID write FPlatformID;
  42.   property TotalPhys: integer read FTotalPhys write FTotalPhys;
  43.   property AvailPhys: integer read FAvailPhys write FAvailPhys;
  44.   property TotalPageFile: integer read FTotalPageFile write FTotalPageFile;
  45.   property AvailPageFile: integer read FAvailPageFile write FAvailPageFile;
  46.   property TotalVirtual: integer read FTotalVirtual write FTotalVirtual;
  47.   property AvailVirtual: integer read FAvailVirtual write FAvailVirtual;
  48. end;
  49.  
  50. implementation
  51.  
  52. uses
  53.   SysUtils;
  54.  
  55. const
  56.   SComputerName = 'Computer name: %s';
  57.   SUserName = 'User name: %s';
  58.   SOSVersion = 'OS Version: %d.%d';
  59.   SBuildNumber = 'Build number: %d';
  60.   SPlatform = 'Platform: %s';
  61.   SWin32S = 'Win32S';
  62.   SWin95 = 'Windows 95';
  63.   SWinNT = 'Windows NT';
  64.   STotalPhys = 'Total physical memory: %d bytes';
  65.   SAvailPhys = 'Available physical memory: %d bytes';
  66.   STotalPageFile = 'Total page file size: %d bytes';
  67.   SAvailPageFile = 'Available page file memory: %d bytes';
  68.   STotalVirtual = 'Total virtual memory: %d bytes';
  69.   SAvailVirtual = 'Available virtual memory: %d bytes';
  70.  
  71. procedure TSystemStatus.GetSystemStatus;
  72. var
  73.   ComputerName: array[0..MAX_COMPUTERNAME_LENGTH] of char;
  74.   UserName: array[0..8] of char;
  75.   length: integer;
  76.   OSVersionInfo: TOSVersionInfo;
  77.   MemoryStatus: TMemoryStatus;
  78. begin
  79.   length := SizeOf(ComputerName);
  80.   if GetComputerName(@ComputerName, length) then
  81.     FComputerName := StrPas(@ComputerName)
  82.   else
  83.     FComputerName := 'Unknown';
  84.  
  85.   length := SizeOf(UserName);
  86.   if GetUserName(@UserName, length) then
  87.     FUserName := StrPas(@UserName)
  88.   else
  89.     FUserName := 'Unknown';
  90.  
  91.   OSVersionInfo.dwOSVersionInfoSize := SizeOf(OSVersionInfo);
  92.   GetVersionEX(OSVersionInfo);
  93.   with OSVersionInfo do
  94.   begin
  95.     FMajorVersion := dwMajorVersion;
  96.     FMinorVersion := dwMinorVersion;
  97.     FBuildNumber := LoWord(dwBuildNumber);
  98.     FPlatformID := dwPlatformID;
  99.   end;
  100.  
  101.   MemoryStatus.dwLength := SizeOf(MemoryStatus);
  102.   GlobalMemoryStatus(MemoryStatus);
  103.   with MemoryStatus do
  104.   begin
  105.     FTotalPhys := dwTotalPhys;
  106.     FAvailPhys := dwAvailPhys;
  107.     FTotalPageFile := dwTotalPageFile;
  108.     FAvailPageFile := dwAvailPageFile;
  109.     FTotalVirtual := dwTotalVirtual;
  110.     FAvailVirtual := dwAvailVirtual;
  111.   end;
  112. end;
  113.  
  114. procedure TSystemStatus.DisplaySystemStatus(Strings: TStrings);
  115. begin
  116.   with Strings do
  117.   begin
  118.     Clear;
  119.     Add(Format(SComputerName, [ComputerName]));
  120.     Add(Format(SUserName, [UserName]));
  121.     Add(Format(SOSVersion, [MajorVersion, MinorVersion]));
  122.     Add(Format(SBuildNumber, [BuildNumber]));
  123.     case PlatformID of
  124.       VER_PLATFORM_WIN32S: Add(Format(SPlatform, [SWin32S]));
  125.       VER_PLATFORM_WIN32_WINDOWS: Add(Format(SPlatform, [SWin95]));
  126.       VER_PLATFORM_WIN32_NT: Add(Format(SPlatform, [SWinNT]));
  127.     end;
  128.     Add(Format(STotalPhys, [TotalPhys]));
  129.     Add(Format(SAvailPhys, [AvailPhys]));
  130.     Add(Format(STotalPageFile, [TotalPageFile]));
  131.     Add(Format(SAvailPageFile, [AvailPageFile]));
  132.     Add(Format(STotalVirtual, [TotalVirtual]));
  133.     Add(Format(SAvailVirtual, [AvailVirtual]));
  134.   end;
  135. end;
  136.  
  137. initialization
  138.  
  139.   RegisterClass(TSystemStatus);
  140.  
  141. end.
  142.